﻿using Microsoft.CodeAnalysis.CSharp.Syntax;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UMLSynthesizer.LangAnalyzer.Elements;

namespace UMLSynthesizer.CSharpAnalyzer.Elements
{
    class CSharpParameterVariableElement : CSharpVariableBase, IParameterElement
    {
        #region Constructor

        public CSharpParameterVariableElement(ParameterSyntax elementNode, IElementWithParametersBase parentElement)
            :base(elementNode, parentElement)
        { }

        #endregion

        #region Properties

        public override string Identifier { get { return (elementNode as ParameterSyntax).Identifier.ToString(); } }
        public override ElementKinds Kind { get { return ElementKinds.ParameterVariable; } }

        public override ITypeBase Type { get { return (ProjectOwner as CSharpProjectElement).GetTypeReference((elementNode as ParameterSyntax).Type); } }

        public override bool IsAbstract { get { return false; } }
        public override bool IsStatic { get { return false; } }
        public override VisibilityStates Visibility { get { return VisibilityStates.Private; } }

        #endregion
    }
}
